package com.testing.specialWord;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GetRegex {
    static String baiduip="/**/jQuery110208845437449165259_1597840796383({\"status\":\"0\",\"t\":\"1597840828862\",\"set_cache_time\":\"\",\"data\":[{\"location\":\"美国 亚马逊云\",\"titlecont\":\"IP地址查询\",\"origip\":\"3.3.3.33\",\"origipquery\":\"3.3.3.33\",\"showlamp\":\"1\",\"showLikeShare\":1,\"shareImage\":1,\"ExtendedLocation\":\"\",\"OriginQuery\":\"3.3.3.33\",\"tplt\":\"ip\",\"resourceid\":\"6006\",\"fetchkey\":\"3.3.3.33\",\"appinfo\":\"\",\"role_id\":0,\"disp_type\":0}]});";

    public static void main(String[] args) {
        //编写一个pattern模板用于截取json内容
        //特征:（里面的内容就是json）  或者  {xxxxx ]}  是json
        //(.*?)表示将 任意字符的任意长度作为一个整体，在pattern中视为一个子集分组。
        Pattern json = Pattern.compile("\\((.*?)\\)");
        Matcher jsonM = json.matcher(baiduip);
        //find的作用，去进行查找，存到group能够调用的内容中，并且判断是否能查到。
        if(jsonM.find()){
            //group(0)包括 (.*?)以外的东西  也就是 (json)
            System.out.println(jsonM.group(0));
            //group(1)不包括 (.*?)以外的东西  就只有 json
            System.out.println(jsonM.group(1));
        }

        //第二种写法  {xxx]} 是json   {(.*?)]}
        //{(.*titlecont(.*?),.*)]} 是最外层 第0层
        //(.*titlecont(.*?),.*) 是内层 第1层  也就是 {  ]}之间包含的内容
        //(.*?)  是第2层  被 .*titlecont    ，  之间包含的内容
        Pattern bigJson = Pattern.compile("\\{(.*titlecont(.*?),.*)\\]\\}");
        Matcher bigM=bigJson.matcher(baiduip);
        //find的作用，去进行查找，存到group能够调用的内容中，并且判断是否能查到。
        if(bigM.find()){
            //包含(.*titlecont(.*?),.*)以外的内容是group(0)，也就是 {xxxx]}
            System.out.println(bigM.group(0));
            //只包含.*titlecont(.*?),.*  是group（1）
            System.out.println(bigM.group(1));
            //只包含(.*?)的，是group(2)
            System.out.println(bigM.group(2));
        }


    }

}
